#ifndef SEQSTRING_H_INCLUDED
#define SEQSTRING_H_INCLUDED


/******************************************************
 *  Project： 串
 *  Function: 串的顺序结构实现
 *  Description:
 *  PROJECT_FILENAME:
 *  Author: coder-itl
 ******************************************************
 *  Copyright 2021/10/30 by coder-itl
 ******************************************************/

#include "StatusLib.h"
#include <string.h>

#define MAX_SIZE 1024

/**
 * 串的堆式顺序存储结构(Heap)
 */
typedef struct {
    /* 如果是非空串,那么就按照指定长度分配内存,否则 ch 就指向 NULL */
    char *ch;
    /* 串的当前长度 */
    int length;
} HString;

/**
 * 初始化串
 * @param str 传递地址方便改变
 */
void InitSting_HeapString(HString *str);

/**
 * 为串 str 赋值,值为字符串常量 chars
 * @param str
 * @param chars
 * @return
 */
Status StrAssign_HeapString(HString *str, char *chars);

/**
 * 打印堆字符串
 * @param str
 */
void PrintHeapString(HString *str);

/**
 * 将串 srcStr 中的内容复制到 destStr中
 * @param destStr
 * @param srcStr
 * @return
 */
Status StrCopy_HeapString(HString *destStr, HString *srcStr);

/**
 * 判空
 * @param str
 * @return
 */
Status IsEmpty_HeapString(HString *str);

/**
 * 比较两个堆字符串的大小
 * @param str1
 * @param str2
 * @return 返回正数或负数
 */
Status StrCompare_HeapString(HString *str1, HString *str2);

#endif // SEQSTRING_H_INCLUDED
